<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // let const 是ES6新增声明的变量的方式

    // var let const 的共同点和区别
    // 共同点:
    // 都可以用于声明局部变量和全局变量

    // 区别
    // 1. var声明的变量有变量提升, let和const声明的变量没有变量提升
    // 2. var声明的变量可以重复声明,let和const声明的变量在同一作用域中不可以重复声明(暂时性死区)
    // 3. var let声明的变量,可以重新赋值;const声明的常数变量,一经声明无法修改(只能在声明时赋值,后面无法改动)
    // 4. ES6新增块级作用域, 块级作用域对var没有影响, 在块级作用域中 let 和 const声明的变量都是局部的(只能在块级作用域中使用)


    // 1. 关于变量提升
    // console.log(a); // undefined
    // console.log(b); // 报错 => 初始化前无法访问“b”
    // console.log(c); // 报错 => 初始化前无法访问“c”

    var a = 10;
    let b = 20;
    const c = 30;

    // 2. 关于重复声明
    // var a = 100;  // 100
    // let b = 200;  // 报错 -> 标识符“b”已声明
    // const c = 300; // 报错 -> 标识符“c”已声明

    // 3. 关于重新赋值
    // a = 100;
    // b = 200;
    // c = 300; // 报错 => 对常量变量的赋值。

    // console.log(a);
    // console.log(b);
    // console.log(c);









</script>

</html>